//包含，判断相交的函数。
#include <stdio.h>
#include <stdlib.h>

int Intersect(float x1,float y1,float x2,float y2,float barx1,float bary1,float barx2,float bary2)
{
  float k1,k2,x0,y0;
  if(x1!=x2 && barx1!=barx2)
  {
    k1=(y1-y2)/(x1-x2);
    k2=(bary1-bary2)/(barx1-barx2);
    if(k1!=k2)
    {
      x0=(bary1-y1-k2*barx1+k1*x1)/(k1-k2);
      y0=y1+k1*(x0-x1);
      if(((x0-barx1)<0.01 && (barx1-x0)<0.01 && (y0-bary1)<0.01 && (bary1-y0)<0.01) || ((x0-barx2)<0.01 && (barx2-x0)<0.01 && (y0-bary2)<0.01 && (bary2-y0)<0.01))
        return 0;
      if((x0-x1)*(x0-x2)>=0 || (x0-barx1)*(x0-barx2)>=0)
        return 0;//不相交
      else 
        return 1;//相交 
    }
    else 
      return 0;
  }
  else if(x1==x2 && barx1 == barx2)
    return 0;
  else
  {
    if(x1==x2)
    {
      k2=(bary1-bary2)/(barx1-barx2);
      x0=x1;
      y0=bary1+k2*(x0-barx1);
      if(((x0-barx1)<0.01 && (barx1-x0)<0.01 && (y0-bary1)<0.01 && (bary1-y0)<0.01) || ((x0-barx2)<0.01 && (barx2-x0)<0.01 && (y0-bary2)<0.01 && (bary2-y0)<0.01))
        return 0;
      if((y0-y1)*(y0-y2)>=0)
        return 0;//不相交    
      else 
        return 1;//相交 
    }
    else if(barx1==barx2)
    {
      k1=(y1-y2)/(x1-x2);
      x0=barx1;
      y0=y1+k1*(x0-x1);
      if(((x0-barx1)<0.01 && (barx1-x0)<0.01 && (y0-bary1)<0.01 && (bary1-y0)<0.01) || ((x0-barx2)<0.01 && (barx2-x0)<0.01 && (y0-bary2)<0.01 && (bary2-y0)<0.01))
        return 0;
      if((y0-bary1)*(y0-bary2)>=0)
        return 0;//不相交
      else 
        return 1;//相交 
    }
  }
}